package com.xiaoyao.novel.parser;

import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.apache.log4j.Logger;

import com.xiaoyao.novel.crawl.BaseCrawl;
import com.xiaoyao.novel.pojo.Book;
import com.xiaoyao.novel.pojo.Chapter;
import com.xiaoyao.novel.util.ClassUtil;
import com.xiaoyao.novel.util.FileUtil;

public class K17Parser {
	private static Logger logger = Logger.getLogger(K17Parser.class);

	/**
	 * 作者,[书名],简介,[类型],图片
	 * 
	 * @param page
	 * @param book
	 * @return
	 */
	public static Book parseDescrib(String page, Book book) {
		page = page.replaceAll("\"", "'");
		page = page.replaceAll("\\s+", " ");
		String infoRegex = "<font\\s*itemprop='name'>(.+?)</font>.+?<div class='bookBox_l'>.+?"
				+ "<img.+?src='(.+?)'.+?<div class='bookBox_r'>.+?<font itemprop='description'>(.+?)</font>";
		Pattern infoPattern = Pattern.compile(infoRegex);
		Matcher matcher = infoPattern.matcher(page);
		if (matcher.find()) {
			if (ClassUtil.isEmpty(book.picPath)) {
				String picUrl = matcher.group(2);
				String fileName = book.bookId + ".jpg";
				fileName = BaseCrawl.downLoadImage(picUrl, fileName); // 抓图片
				book.picPath = FileUtil.PIC_DIR + fileName;
			}
			if (ClassUtil.isEmpty(book.describ)) {
				String describ = matcher.group(3);
				book.setDescrib(describ);
			}
			String authorName = matcher.group(1);
			book.setAuthorName(authorName);
		} else {
			logger.error("信息错误!");
		}
		return book;
	}

	public static List<Chapter> parseBook(String page, Book book) {
		logger.debug("开始解析... ");
		page = page.replaceAll("\"", "'");
		page = page.replaceAll("\\s+", " ");
		logger.debug(page);
		List<Chapter> list = new ArrayList<Chapter>();
		book.list = list;
		// <li><a href='/read/bookreader/98.html' class='green'
		// title='字数：3109&nbsp;&nbsp;&nbsp;&nbsp;更新时间：2013-05-28 18:39:29'><b
		// class='title'>
		String bookRegex = "<li>\\s*<a.+?href='(/chapter/\\d+/(\\d+).html)'.+?>(.+?)</a>\\s*</li>";
		Pattern bookPattern = Pattern.compile(bookRegex);
		Matcher matcher = bookPattern.matcher(page);
		while (matcher.find()) {
			String title = matcher.group(3).trim();
			logger.info(title);
			if (title.startsWith("引子 ") || title.startsWith("前言") || title.startsWith("第") || title.matches("\\d+.+")) {
				Chapter chapter = new Chapter();
				list.add(chapter);
				chapter.bookId = book.bookId;
				chapter.chapterUrl = matcher.group(1);
				chapter.webId = book.webId + "/" + matcher.group(2);
				chapter.chapterTitle = title;
				logger.debug(chapter);
			}
		}
		return list;
	}

	public static void parseChapter(String page, Chapter chapter) {
		page = page.replaceAll("\"", "'");
		page = page.replaceAll("\\s+", " ");
		if (page.matches(".+?id.+?chapterContentWapper.+?>.+")) {
			page = page.replaceFirst(".+?id.+?chapterContentWapper.+?>", "");
		}
		page = page.replaceFirst("</div>.+", "");
		page = page.replaceFirst("<div.+", "");
		logger.debug(page);
		chapter.chapterContent = page;
	}
}
